מה יעיל יותר:
function person(name){
  this.name=name;
  this.speak=function(str){
    //some code
  }
}

או
function person(name){
  this.name=name;
}
person.prototype.speak=function(str){
  //some code
}

הבנתי שהשיטה השניה תופסת פחות זכרון, משום שהפונקציה לא נוצרת מחדש בכל יצירה של instance
האם זה נכון?
האם יש יתרונות לשיטה הראשונה?

4 תשובות

avatar ענה intval ב 15 ליוני 2012 #

במקרה השני זו מטודה סטטית ששייכת למחלקה.
חוץ מזה, בשני המקרים שום דבר לא נוצר פעמיים והשאלה שלך במילים אחרות היא
האם יש ייתרונות בכתיבה של מטודות לא סטטיות.
מבחינת יעילות או זיכרון ההבדל כל כך מזערי שאף אחד אף פעם לא ירגיש אותו.

באופן כללי על משתנים סטטים תוכל לעיין פה.

avatar ענה משתמש_238946 ב 15 ליוני 2012 #

אם באמת אין הבדל, במה נהוג להשתמש בסקריפטים מקצועיים?

avatar ענה intval ב 15 ליוני 2012 #

תלוי בצרכים. זה לא שני דרכים לעשות אותו דבר, זה שני דברים שונים לגמרי שיש להם קצת במשותף.
רוב הסיכויים שאתה לא צריך שום דבר סטטי, בגלל זה דרך מספר 1 אמורה לענות לרוב צרכיך.

avatar ענה משתמש_238946 ב 15 ליוני 2012 #

הבנתי עכשיו למה התכוונת, תודה רבה.